// pkgUser/pages/login/login.js
import wxValidate from 'wechat-validate'
import {
  getSmsCaptchaApi,
  loginNumApi,
  loginWeChatApi,
  bindCid, getAccessTokenUpApi, getOpenIdByCodeApi
} from '../../../api/login.js'
const app = getApp()
Page({
  // 将插件注入到页面实例中
  behaviors: [wxValidate],
  // 手机号验证规则
  rules: {
    mobile: [{
        required: true,
        message: '手机号码为空!'
      },
      {
        pattern: /^1[3-9]\d{9}$/,
        message: '手机号码不正确!'
      }
    ]
  },
  /**
   * 页面的初始数据
   */
  data: {
    // 是否同意协议
    ischecked: false,
    // 是否显示倒计时
    isVerification: false,
    // 手机号
    mobile: '',
    // 验证码
    smsCaptcha: '',

  },
  //返回上一级
  back() {
    wx.reLaunch({
      url: '/pages/my/index',
    })
  },
  // 获取验证码
  async getVerification() {
    // 获取验证结果
    const {
      valid,
      message
    } = this.validate('mobile')
    // 如果验证不合法则不再执行后面的逻辑
    if (!valid) return wx.utils.toast(message, 'error')
    // 显示倒计时组件
    this.setData({
      isVerification: true
    })
    // 发送请求
    await getSmsCaptchaApi({
      mobile: this.data.mobile
    })
  },
  // 倒计时
  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      isVerification: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
  // 点击协议,弹窗授权获取用户隐私
  bindGetUserInfo() {
    if (app.openid) {
      this.setData({
        ischecked: !this.data.ischecked
      })
    } else {
      wx.login({
        success: async ({ code }) => {
          // console.log(code);
          const openid = await getOpenIdByCodeApi({ code })
          // console.log(openid);
          this.setData({
            ischecked: !this.data.ischecked
          })
          // 持久化存储
          app.setUserId('openid', openid)
        },
      })
    }
  },
  // 点击登录
  async onSubmit() {
    if (!this.data.smsCaptcha) return
    if (!this.data.ischecked) return wx.utils.toast('请阅读协议', 'error')
    try {
      const {
        mobile: username,
        smsCaptcha
      } = this.data
      const {
        userId,
        ...userInfo
      } = await loginNumApi({
        username,
        smsCaptcha
      })
      // console.log(userId);
      if (userId) {
        // 调用重复逻辑
        this.goIndex(userId, userInfo)
      } else {
      }
    } catch (err) {
    }
  },
  // 点击微信登录  获取手机号
  async getPhoneNumber(e) {
    if (!this.data.ischecked) return wx.utils.toast('请阅读协议', 'error')
    // console.log(e.detail.code)  // 动态令牌
    // console.log(e.detail.errMsg) // 回调信息（成功失败都会返回）
    // console.log(e.detail.errno)  // 错误码（失败时返回）
    const {
      code,
      errMsg,
      errno
    } = e.detail
    if (errMsg === 'getPhoneNumber:ok') {
      const { userId, ...userInfo } = await getAccessTokenUpApi({ code })
      // console.log(userId, userInfo);
      // 调用重复逻辑
      this.goIndex(userId, userInfo)
    }
  },

  // 将重复的代码封装成函数，方便调用
  goIndex(userId, userInfo) {
    // 存储到app内
    app.setUserId('userId', userId)
    app.setUserId('userInfo', userInfo)
    wx.utils.toast('登录成功', 'success')
    // // 登陆成功连接webSocket和个推
    app.wsConnect(userId)
    // this.gtConnect(userId)
    // 跳转页面
    // 判断是否有重定向地址
    if (this.data.redirctUrl) {
      setTimeout(() => {
        wx.redirectTo({
          url: this.data.redirctUrl,
        })
      }, 1000)
    } else {
      setTimeout(() => {
        wx.switchTab({
          url: '/pages/my/index',
        })
      }, 1000)
    }
  },
  //连接个推
  gtConnect(userId) {
    bindCid({
      cid: app.cid,
      userId
    }).then((res) => {})
  },
  //协议页面
  toAgreement(ev) {
    wx.showLoading({
      title: '正在加载中...',
      mask: true,
    })
    let url = ''
    if (ev.mark.type === '1') {
      url = 'https://utopia-oss.oss-cn-hangzhou.aliyuncs.com/utopia/agreement/%E4%B9%8C%E6%89%98%E9%82%A6%E7%94%A8%E6%88%B7%E5%8D%8F%E8%AE%AE.docx'
    } else if (ev.mark.type === '2') {
      url = 'https://utopia-oss.oss-cn-hangzhou.aliyuncs.com/utopia/agreement/%E4%B9%8C%E6%89%98%E9%82%A6%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96.docx'
    } else {
      url = 'https://utopia-oss.oss-cn-hangzhou.aliyuncs.com/utopia/agreement/%E6%94%AF%E4%BB%98%E5%8D%8F%E8%AE%AE.docx'
    }
    wx.downloadFile({
      url,
      success: (res) => {
        wx.openDocument({
          filePath: res.tempFilePath,
          // fileType: 'docx',
        })
      },
      complete: () => {
        wx.hideLoading()
      }
    })


  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad({
    redirctUrl
  }) {
    // console.log(redirctUrl);
    if (redirctUrl) {
      this.setData({
        redirctUrl
      })
    } else {
      this.setData({
        redirctUrl: ''
      })
    }

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})